package cn.com.bod.fas.common.service.impl;

import cn.com.bod.fas.common.service.FeignSequenceService;
import cn.com.bod.fas.common.utils.ValueGenerationUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * @description  序列获取Feign接口Fallback类
 * @author zhangchi
 * @date 2019年9月29日 10:26:50
 * @version 1.0.0
 * @Copyright (c) scfhdt
 */
@Component
@Slf4j
public class FeignSequenceServiceImpl implements FeignSequenceService {

    /**
     * @description 使用模板code获取模板下个序列
     * @author zhangchi
     * @date 2019年9月29日 10:27:12
     * @param seqId 
     * @return java.lang.String 
     */
    @Override
    public String getTempSequenceByCode(String seqId) {
        log.error("FeignSequenceService.getTempSequenceByCode已熔断");
        return ValueGenerationUtil.createUUID32();
    }

    /**
     * @description 获取模板序列多个序列
     * @author zhangchi
     * @date 2019年9月29日 10:40:48
     * @param seqId 模板code
     * @param count 获取数量
     * @return java.util.List<java.lang.String>
     */
    @Override
    public List<String> getTempSequenceByCodeAndCount(String seqId, Integer count) {
        log.error("FeignSequenceService.getTempSequenceByCodeAndCount已熔断");
        List<String> list = new ArrayList<>(count);
        for (int i = 0; i < count; i++) {
            list.add(ValueGenerationUtil.createUUID32());
        }
        return list;
    }

    /**
     * @description 获取序列的下个值
     * @author zhangchi
     * @date 2019年9月29日 11:10:35
     * @param seqId 序列code
     * @return java.lang.Long
     */
    @Override
    public String getNextSequence(String seqId) {
        log.error("FeignSequenceService.getNextSequence已熔断");
        return ValueGenerationUtil.createStringSeq();
    }

    /**
     * @description 获取序列的多个值
     * @author zhangchi
     * @date 2019年9月29日 11:11:17
     * @param seqId 序列code
     * @param count 获取数量
     * @return java.util.List<java.lang.Long>
     */
    @Override
    public List<String> getNextSequenceByCount(String seqId, Integer count) {
        log.error("FeignSequenceService.getNextSequenceByCount已熔断");
        List<String> list = new ArrayList<>(count);
        for (int i =0; i <count; i++) {
            list.add(ValueGenerationUtil.createStringSeq());
        }
        return list;
    }

}
